package com.ddpt.platform.common.export.dto.mall;

import cn.hutool.core.collection.CollectionUtil;
import com.ddpt.platform.common.export.dto.ExportRequestDto;
import com.ddpt.platform.common.util.AssertUtil;
import lombok.Getter;
import lombok.Setter;

import java.util.Arrays;
import java.util.List;
import java.util.Set;

@Getter
@Setter
public class GoodsDto extends ExportRequestDto {
    /**
     * 商品类型
     * mallGoods,//商城商品
     * memberGoods,//会员商品
     * storeGoods,//商家商品
     */
    private String goodsType;
    /**
     * 商品id集合
     */
    private Set<Long> goodsIds;

    /**
     * 上下线状态
     */
    private Integer onlineStatus;

    //商品名称
    private String productName;

    //商品类别
    private Long categoryId;

    //商家id
    private Long storeId;

    //商城id - 商家商品查询使用
    private Long mallId;

    //1-按sort原本排序 2-按上架时间倒序 3-按上架时间正序 4-按销量倒序 5-按价格倒序 6-按价格升序
    private Integer sortType;

    //商户id
    private Long merchantId;

    //是否统计规格总库存
    private boolean withTotalStock;

    //是否包含规格
    private boolean withProducts;

    //积分价格上限
    private Integer aftPrice;

    //积分价格下限
    private Integer prePrice;

    /**
     * 商家商品查询参数
     */
    //规格名称（模糊匹配）
    private String specification;

    //商品分类id
    private Long category;

    private Long appId;


    @Override
    public String montage() {
        return super.montage() + productName + goodsType;
    }

    @Override
    public void verification() {
        super.verification();
        List<String> enums = Arrays.asList("mallGoods", "memberGoods", "storeGoods");
        boolean flag = CollectionUtil.contains(enums, this.goodsType);
        AssertUtil.isNull(this.goodsType, "商品类型不能为空");
        AssertUtil.isTrue(!flag, "商品类型错误");
    }

    @Override
    public String getSpeType() {
        return this.goodsType;
    }

    @Override
    public void setSpeType(String type) {
        this.goodsType = type;
    }
}
